#include "Bala.h"


Bala::Bala(float xNave, float yNave, float anguloNave, int quantidadeBalas){
    
    ajustarAngulo();
    this->setAngulo(anguloNave);
    this->setX(xNave);
    this->setY(yNave);
    this->setVelocidade(1);
    this->setId(quantidadeBalas);
    this->setAtivo(true);
    this->setRaio(1);
}

//////////////////////////////////////////////////////////////////////////
/********************** GETTERS E SETTERS *******************************/


void Bala::setId(int id) {
    this->id = id;
}

int Bala::getId() {
    return id;
}


//////////////////////////////////////////////////////////////////////////

void Bala::printDados(){
  
    cout << "X: "  << getX() <<"\tY: " << getY()<< "\tAngulo: " << getAngulo()<< "\tRaio: "<< getRaio()<<endl ;
    cout << "Id: "  << getId() <<"\tAtivo: "<< isAtivo() << endl ;

}

void Bala::desenhar() {
    
    if (this->isAtivo()) {
      	
	glPushMatrix();
   
	glTranslatef(this->getX(), this->getY(), 0.0);
	glRotatef(this->getAngulo(),0,0,1);
    
	glColor3f(1,0,0);
	glPointSize(3);
	glBegin(GL_POINTS);
	  glVertex2f( 0, 7);
	glEnd();
	//glutSolidSphere(this->getRaio(), 10, 10);
	
	glPopMatrix();
    }
}


void Bala::mover(int height, int width) {

    //testa se a bala ainda esta no cenario
    if ( (this->getX() > (width)) || (this->getX() < -(width)) ||
         (this->getY() > (height)) || (this->getY() < -(height)) )  {

        this->setAtivo(false);
        return;
    }

    //se tiver.. incremente a posicao dela
    else {
        this->setX(this->getX() + this->getVelocidade() * getCosAnguloGraus());
        this->setY(this->getY() + this->getVelocidade() * getSinAnguloGraus());
    }

}
